/**
 * 净化 object，过滤掉 null undefined 和 对象(包含数组)
 * @param {object} obj object 对象
 * @returns {object} object 对象
 */
export function purifyObject(obj: object): unknown {
  if (!obj || typeof obj !== 'object')
    return {}
  return JSON.parse(
    JSON.stringify(obj, (key: string, value: unknown) =>
      ((key && typeof value === 'object') || (!value && value !== 0)) ? undefined : value,
    ),
  )
}

/**
 * 转化枚举类型的 entries 为对象数组，过滤掉数字枚举中数字为 key 的项
 * @param entries 枚举成员的 entries
 * @returns {Array<{ label: string, value: string | number }>} 净化后的 json 对象 { label: string, value: string|number } 数组
 */
export function convertEnumEntriesToArray(entries: [string, string | number][]): Array<{ label: string; value: string | number }> {
  const result = entries.map(([key, value]) => ({ label: key, value }))
  if (result.find(i => typeof i.value === 'number'))
    return result.filter(i => typeof i.value === 'number')
  return result
}
